package com.yanftch.stopcoding.common.util

import java.awt.BorderLayout
import java.awt.Color
import java.awt.Toolkit
import javax.swing.*

object ToastUtils {
    private var toast: JDialog? = null
    private var label: JLabel? = null

    @JvmStatic
    fun showToast(parent: JFrame? = null, message: String) {
        // 如果已有弹窗，则关闭它
        toast?.dispose()

        // 创建新的弹窗
        toast = JDialog(parent).apply {
            isUndecorated = true // 不显示边框
            isModal = false // 不阻塞用户操作

            // 设置弹窗内容和样式
            label = JLabel(message).apply {
                background = Color.getColor("#33000000")
                foreground = Color.WHITE
                border = BorderFactory.createEmptyBorder(10, 10, 10, 10) // 添加内边距
                isOpaque = true // 设置标签为不透明
            }
            add(label, BorderLayout.CENTER)

            // 计算屏幕中心位置
            pack() // 自适应宽高
            val screenSize = Toolkit.getDefaultToolkit().screenSize
            val y = (screenSize.height * 0.8).toInt() // 设置为屏幕高度的 80%
            setLocation((screenSize.width - width) / 2, y)
        }

        // 使用 SwingUtilities 来确保 Toast 显示时没有闪烁
        SwingUtilities.invokeLater {
            toast?.isVisible = true // 显示弹窗
        }

        // 设置定时关闭
        Timer(2000) {
            toast?.dispose()
        }.start()
    }
}
